付小费的问题

举个小费的例子,如果我们要创建一个控制器来估计我们在餐馆应该给多少小费,我们可以这样构造它:

输入

规则

实例

付小费的问题-代码实现

注:此方法所有计算都是手工的,一步一步来。 “小费问题”通常用来说明模糊逻辑原理从一组紧凑、直观的专家规则生成复杂行为的能力。

输入变量

在决定就餐时给多少小费时,有很多变量。考虑其中的两个:

输出变量

输出变量只是小费的数量,以百分比表示:

为了便于讨论,我们假设输入变量和输出变量都需要“高”、“中”和“低”隶属度函数。这些在scikit-fuzzy中定义如下

模糊规则

现在,为了使这些三角形有用,我们定义输入变量和输出变量之间的模糊关系。对于我们的例子,考虑三条简单的规则:

大多数人会同意这些规则,但这些规则是模糊的。将不精确的规则映射为定义的、可操作的提示是一项挑战。这是模糊逻辑擅长的一类任务。

规则应用

在以下情况下:

规则聚合(Rule aggregation)

已知单个隶属函数之后需要合并它们。这通常使用最大操作符来完成。这一步也被称为聚合。

去模糊化(Defuzzification)

最后,为了得到一个真实的世界答案,我们返回清晰值。我们这个例子中使用质心法。 结果是20.2%的小费。

结语

模糊系统是允许复杂的、直观的行为基于一个开销最小的规则稀疏系统。注意,我们的隶属度函数是粗糙的,仅在整数处定义,但fuzzy .interp_membership允许有效的分辨率随需求而增加。该系统可以对输入的任意小变化作出响应,处理负担最小。